// MIP SCRIPT FOR PROSIM: SINGLE AND DUAL SEAT.
// IDX DEVICES SHOULD BE:
// MCP = 0
// EFIS CAPT = 1
// EFIS F/O = 2
// CDU CAPT = 13
// CDU F/O = 14
// CHRONO CAPT = 15
// CHRONO F/O = 16
// USB EXPANSION INPUTS AND OUTPUTS (WARNINGS, DUs, AFDSs, FLAPS, SWITCHES AND INDICATORS) = 17
// USB SERVOS = 18



// ////////////////////////////////////////////////
// EFIS Capt
// Prosim reads from 500 - 522
// ////////////////////////////////////////////////

Var 500, name I_E1_DISPMODE
Var 501, name I_E1_ZOOM
Var 502, name I_E1_NAV1
Var 503, name I_E1_NAV2
Var 504, name I_E1_STA, Link IOCARD_SW, Device 1, Input 27
Var 505, name I_E1_WPT, Link IOCARD_SW, Device 1, Input 28
Var 506, name I_E1_CTR, Link IOCARD_SW, Device 1, Input 29
Var 507, name I_E1_ARPT, Link IOCARD_SW, Device 1, Input 30
Var 508, name I_E1_TFC, Link IOCARD_SW, Device 1, Input 31
Var 509, name I_E1_DATA, Link IOCARD_SW, Device 1, Input 32
Var 510, name I_E1_POS, Link IOCARD_SW, Device 1, Input 33
Var 511, name I_E1_FPV, Link IOCARD_SW, Device 1, Input 34
Var 512, name I_E1_MTR, Link IOCARD_SW, Device 1, Input 38
Var 513, name I_E1_MINRST
Var 514, name I_E1_QNHSTD
Var 515, name I_E1_MINRADIO
Var 516, name I_E1_MINBARO
Var 517, name I_E1_CHANGEMIN
Var 518, name I_E1_BAROHPA
Var 519, name I_E1_BAROINCH
Var 520, name I_E1_CHGBARO
Var 521, name I_E1_TERR
Var 522, name I_E1_WXR

Var 523, Link IOCARD_SW, Device 1, Input 10    // VOR mode
{
 If V523 = 1
  {
   &I_E1_DISPMODE = 2	
  }
}
Var 524, Link IOCARD_SW, Device 1, Input 11    // MAP mode
{
 If V524 = 1
  {
   &I_E1_DISPMODE = 3	
  }
}
Var 525, Link IOCARD_SW, Device 1, Input 12    // PLAN mode
{
 If V525 = 1
  {
   &I_E1_DISPMODE = 4
  }
}

Var 526, Link IOCARD_SW, Device 1, Input 0    // Range 5
{
 If V526 = 1
  {
   &I_E1_ZOOM = 1
  }
}
Var 527, Link IOCARD_SW, Device 1, Input 1    // Range 10
{
 If V527 = 1
  {
   &I_E1_ZOOM = 2
  }
}
Var 528, Link IOCARD_SW, Device 1, Input 2    // Range 20
{
 If V528 = 1
  {
   &I_E1_ZOOM = 3
  }
}
Var 529, Link IOCARD_SW, Device 1, Input 3    // Range 40
{
 If V529 = 1
  {
   &I_E1_ZOOM = 4
  }
}
Var 530, Link IOCARD_SW, Device 1, Input 4    // Range 80
{
 If V530 = 1
  {
   &I_E1_ZOOM = 5
  }
}
Var 531, Link IOCARD_SW, Device 1, Input 5    // Range 160
{
 If V531 = 1
  {
   &I_E1_ZOOM = 6
  }
}
Var 532, Link IOCARD_SW, Device 1, Input 6    // Range 320
{
 If V532 = 1
  {
   &I_E1_ZOOM = 7
  }
}
Var 533, Link IOCARD_SW, Device 1, Input 7    // Range 640
{
 If V533 = 1
  {
   &I_E1_ZOOM = 8
  }
}
Var 535, Link IOCARD_SW, Device 1, Input 36    // NAV 1 VOR
{
 CALL &E1NAV1
}
Var 536, Link IOCARD_SW, Device 1, Input 37    // NAV 1 ADF
{
 CALL &E1NAV1
}
var 537, name E1NAV1, Link SUBRUTINE
{
 If V535 = 1
  {
   &I_E1_NAV1 = 1	
  }
 Else
  {
   If V536 = 1
    {
     &I_E1_NAV1 = 2
    }
   Else
    {
     &I_E1_NAV1 = 0
    }
  }
}

Var 538, Link IOCARD_SW, Device 1, Input 18    // NAV 2 VOR
{
 CALL &E1NAV2
}
Var 539, Link IOCARD_SW, Device 1, Input 19    // NAV 2 ADF
{
 CALL &E1NAV2
}
var 540, name E1NAV2, Link SUBRUTINE
{
 If V538 = 1
  {
   &I_E1_NAV2 = 1	
  }
 Else
  {
   If V539 = 1
    {
     &I_E1_NAV2 = 2
    }
   Else
    {
     &I_E1_NAV2 = 0
    }
  }
}
Var 541, Link IOCARD_SW, Device 1, Input 9    // APP mode
{
 If V541 = 1
  {
   &I_E1_DISPMODE = 1	
  }
}
var 550, name Min1Moved
Var 551, name Bar1Moved

// Minimums knob push button
Var 552, Link IOCARD_SW, Device 1, Input 25
{
 If V552 = 1
  {
   &Min1Moved = 0
  }
 Else
  {
   If &Min1Moved = 0
    {
     &I_E1_MINRST = Toggle 0
    }
  }
}
// QNH knob push button
Var 553, Link IOCARD_SW, Device 1, Input 22
{
 If V553 = 1
  {
   &Bar1Moved = 0
  }
 Else
  {
   If &Bar1Moved = 0
    {
     &I_E1_QNHSTD = Toggle 0
    }
   }
}
// Minimums rotary encoder
Var 554, Link IOCARD_ENCODER, Device 1, Input 23, Aceleration 4, Type 2
{
 &Min1Moved = 1
 If V552 = 1
  {
   If V554 > 0 
    {
     &I_E1_MINRADIO = Toggle 0
    }
   Else
    {
     &I_E1_MINBARO = Toggle 0
    }
  }
 Else
  {
   &I_E1_CHANGEMIN = V554 * -1
   &I_E1_CHANGEMIN = 0
  }
}
// QNH rotary encoder
Var 555, Link IOCARD_ENCODER, Device 1, Input 20, Aceleration 4, Type 2
{
 &Bar1Moved = 1
 If V553 = 1
  {
   If V555 > 0 
    {
     &I_E1_BAROINCH = Toggle 0
    }
   Else
    {
     &I_E1_BAROHPA = Toggle 0
    }
  }
 Else
  {
   &I_E1_CHGBARO = V555 * -1
   &I_E1_CHGBARO = 0
  }
}
// ///////////////////////////////////
// End EFIS Captain
// ///////////////////////////////////



// ////////////////////////////////////////////////
// EFIS F/O
// ////////////////////////////////////////////////

Var 600, name I_E2_DISPMODE
Var 601, name I_E2_ZOOM
Var 602, name I_E2_NAV1
Var 603, name I_E2_NAV2
Var 604, name I_E2_STA, Link IOCARD_SW, Device 2, Input 27
Var 605, name I_E2_WPT, Link IOCARD_SW, Device 2, Input 28
Var 606, name I_E2_CTR, Link IOCARD_SW, Device 2, Input 29
Var 607, name I_E2_ARPT, Link IOCARD_SW, Device 2, Input 30
Var 608, name I_E2_TFC, Link IOCARD_SW, Device 2, Input 31
Var 609, name I_E2_DATA, Link IOCARD_SW, Device 2, Input 32
Var 610, name I_E2_POS, Link IOCARD_SW, Device 2, Input 33
Var 611, name I_E2_FPV, Link IOCARD_SW, Device 2, Input 34
Var 612, name I_E2_MTR, Link IOCARD_SW, Device 2, Input 38
Var 613, name I_E2_MINRST
Var 614, name I_E2_QNHSTD
Var 615, name I_E2_MINRADIO
Var 616, name I_E2_MINBARO
Var 617, name I_E2_CHANGEMIN
Var 618, name I_E2_BAROHPA
Var 619, name I_E2_BAROINCH
Var 620, name I_E2_CHGBARO
Var 621, name I_E2_TERR
Var 622, name I_E2_WXR

Var 623, Link IOCARD_SW, Device 2, Input 10    // VOR mode
{
	If V623 = 1
	{
		&I_E2_DISPMODE = 2	
	}
}
Var 624, Link IOCARD_SW, Device 2, Input 11    // MAP mode
{
	If V624 = 1
	{
		&I_E2_DISPMODE = 3	
	}
}
Var 625, Link IOCARD_SW, Device 2, Input 12    // PLAN mode
{
	If V625 = 1
	{
		&I_E2_DISPMODE = 4
	}
}

Var 626, Link IOCARD_SW, Device 2, Input 0    // Range 5
{
	If V626 = 1
	{
		&I_E2_ZOOM = 1
	}
}
Var 627, Link IOCARD_SW, Device 2, Input 1    // Range 10
{
	If V627 = 1
	{
		&I_E2_ZOOM = 2
	}
}
Var 628, Link IOCARD_SW, Device 2, Input 2    // Range 20
{
	If V628 = 1
	{
		&I_E2_ZOOM = 3
	}
}
Var 629, Link IOCARD_SW, Device 2, Input 3    // Range 40
{
	If V629 = 1
	{
		&I_E2_ZOOM = 4
	}
}
Var 630, Link IOCARD_SW, Device 2, Input 4    // Range 80
{
	If V630 = 1
	{
		&I_E2_ZOOM = 5
	}
}
Var 631, Link IOCARD_SW, Device 2, Input 5    // Range 160
{
	If V631 = 1
	{
		&I_E2_ZOOM = 6
	}
}
Var 632, Link IOCARD_SW, Device 2, Input 6    // Range 320
{
	If V632 = 1
	{
		&I_E2_ZOOM = 7
	}
}
Var 633, Link IOCARD_SW, Device 2, Input 7    // Range 640
{
	If V633 = 1
	{
		&I_E2_ZOOM = 8
	}
}
Var 635, Link IOCARD_SW, Device 2, Input 36    // NAV 1 VOR
{
	CALL &E2NAV1
}
Var 636, Link IOCARD_SW, Device 2, Input 37    // NAV 1 ADF
{
	CALL &E2NAV1
}
var 637, name E2NAV1, Link SUBRUTINE
{
	If V635 = 1
	{
		&I_E2_NAV1 = 1	
	}
	Else
	{
		If V636 = 1
		{
			&I_E2_NAV1 = 2
		}
		Else
		{
			&I_E2_NAV1 = 0
		}
	}
}

Var 638, Link IOCARD_SW, Device 2, Input 18    // NAV 2 VOR
{
	CALL &E2NAV2
}
Var 639, Link IOCARD_SW, Device 2, Input 19    // NAV 2 ADF
{
	CALL &E2NAV2
}
var 640, name E2NAV2, Link SUBRUTINE
{
	If V638 = 1
	{
		&I_E2_NAV2 = 1	
	}
	Else
	{
		If V639 = 1
		{
			&I_E2_NAV2 = 2
		}
		Else
		{
			&I_E2_NAV2 = 0
		}
	}
}
Var 641, Link IOCARD_SW, Device 2, Input 9    // APP mode
{
	If V641 = 1
	{
		&I_E2_DISPMODE = 1	
	}
}
var 650, name Min2Moved
Var 651, name Bar2Moved

Var 652, Link IOCARD_SW, Device 2, Input 25
{
	If V652 = 1
	{
		&Min2Moved = 0
	}
	Else
	{
		If &Min2Moved = 0
		{
			&I_E2_MINRST = Toggle 0
		}
	}
}
Var 653, Link IOCARD_SW, Device 2, Input 22
{
	If V653 = 1
	{
		&Bar2Moved = 0
	}
	Else
	{
		If &Bar2Moved = 0
		{
			&I_E2_QNHSTD = Toggle 0
		}
	}
}
Var 654, Link IOCARD_ENCODER, Device 2, Input 23, Aceleration 4, Type 2
{
	&Min2Moved = 1
	If V652 = 1
	{
		If V654 > 0 
		{
			&I_E2_MINRADIO = Toggle 0
		}
		Else
		{
			&I_E2_MINBARO = Toggle 0
		}
	}
	Else
	{
		&I_E2_CHANGEMIN = V654 * -1
		&I_E2_CHANGEMIN = 0
	}
}
Var 655, Link IOCARD_ENCODER, Device 2, Input 20, Aceleration 4, Type 2
{
	&Bar2Moved = 1
	If V653 = 1
	{
		If V655 > 0 
		{
			&I_E2_BAROINCH = Toggle 0
		}
		Else
		{
			&I_E2_BAROHPA = Toggle 0
		}
	}
	Else
	{
		&I_E2_CHGBARO = V655 * -1
		&I_E2_CHGBARO = 0
	}
}

// ///////////////////////////
// End EFIS F/O
// ///////////////////////////



// ///////////////////////////
// MCP
// ///////////////////////////

// INITIALIZATION
Var 0000, Value 0
{
&SUB_BLINK = 0
&SUB_BLINK = TIMER 1, 0, 100
}

// DIGITS
// These are the actual MCP values that are read and written by Prosim. They need to be whole values.
Var 100, name D_COURSE1, Link IOCARD_DISPLAY, Device 0, Digit 0, Numbers 3
Var 102, name D_IAS, Link IOCARD_DISPLAY, Device 0, Digit 3, Numbers 3
Var 104, name D_HDG, Link IOCARD_DISPLAY, Device 0, Digit 6, Numbers 3
Var 106, name D_ALT, Link IOCARD_DISPLAY, Device 0, Digit 9, Numbers 5
Var 108, name D_VS, Link IOCARD_DISPLAY, Device 0, Digit 14, Numbers 5
Var 110, name D_COURSE2, Link IOCARD_DISPLAY, Device 0, Digit 19, Numbers 3
Var 112, Name VS_Trigger  // Vertical Speed Trigger
// This variable is set to 1 when the VS wheel is rotated while the VS display is blanked.
// This can trigger a V/S mode if MCP altitude is different than current altitude.
Var 114, name BRIGHT, Link IOCARD_DISPLAY, Device 0, Digit 32, Numbers 3  // Bright control for digits
Var 116, name D_IAS_IND, Link IOCARD_DISPLAY, Device 0, Digit 22, Numbers 1
Var 118, name SUB_BLINK, Link SUBRUTINE
{
 If &Inhibit_IAS = 0
  {
   IF &O_IASSYMB = 0
    {
     &D_IAS_IND = -999999
    }
   ELSE
    {
     IF &O_IASSYMB = 1
      {
       &D_IAS_IND = -999996
       &D_IAS_IND = DELAY -999999 80
      }
   IF &O_IASSYMB = 2
    {
     &D_IAS_IND = 8
     &D_IAS_IND = DELAY -999999 80
    }
   }
  }
}
Var 120, name HDG_temp
Var 122, name BANK_act


// OUTPUTS
// These are the lights on the MCP, written by Prosim
Var 200, name DECIMAL
{
If &Inhibit_IAS = 0  // Do not place the decimal if the display is blanked
 {
  &IAS_DOT = &DECIMAL
 }
}
Var 201, name IAS_DOT, Link IOCARD_OUT, Device 0, Output 20
Var 202, name O_N1, Link IOCARD_OUT, Device 0, Output 21
Var 204, name O_AT, Link IOCARD_OUT, Device 0, Output 22
Var 206, name O_SPEED, Link IOCARD_OUT, Device 0, Output 23
Var 208, name O_LVLCHG, Link IOCARD_OUT, Device 0, Output 24
Var 210, name O_VNAV, Link IOCARD_OUT, Device 0, Output 25
Var 212, name O_HDGSEL, Link IOCARD_OUT, Device 0, Output 26
Var 214, name O_APP, Link IOCARD_OUT, Device 0, Output 27
Var 216, name O_VORLOC, Link IOCARD_OUT, Device 0, Output 28
Var 218, name O_LNAV, Link IOCARD_OUT, Device 0, Output 29
Var 220, name O_ALTHLD, Link IOCARD_OUT, Device 0, Output 30
Var 222, name O_VS, Link IOCARD_OUT, Device 0, Output 31
Var 224, name O_CWSA, Link IOCARD_OUT, Device 0, Output 32
Var 226, name O_CMDA, Link IOCARD_OUT, Device 0, Output 33
Var 228, name O_CWSB, Link IOCARD_OUT, Device 0, Output 34
Var 230, name O_CMDB, Link IOCARD_OUT, Device 0, Output 35
Var 232, name O_FD1, Link IOCARD_OUT, Device 0, Output 37	
Var 234, name O_FD2, Link IOCARD_OUT, Device 0, Output 36	
Var 236, name O_IASSYMB  // Flashing A/B in IAS window, 0=No warning, 1=Flashing A, 2=Flashing B
Var 238, name O_BACKLIGHT		// Backlight: 1 = on, 0 = off



// ROTARY ENCODERS
// The rotary encoders control the MCP values. The actual rotary encoder variables are not read or written by Prosim.
// The rotary encoders change the MCP values. Before doing this, they will check the associated inhibit variable, to
// see if the display is not blanked. If the display is blanked, the rotary encoder does nothing.
Var 300, name E_IAS, Link IOCARD_ENCODER, Device 0, Input 0, Aceleration 4, Type 2
{
  If &Inhibit_IAS = 0 
  {
     L0 = -1 * V300
	 If &DECIMAL = 1
	 {
	    V102 = LIMIT 50, 90, L0
	 }
	 Else
	 {
	    V102 = LIMIT 110, 400, L0
     }
  }
}
Var 302, name E_ALT, Link IOCARD_ENCODER, Device 0, Input 2, Aceleration 4, Type 2
{
  If &Inhibit_Alt = 0
  {
     L0 = -100 * V302
     V106 = LIMIT 0 ,50000, L0
  }
}

Var 304, name E_COURSE1, Link IOCARD_ENCODER, Device 0, Input 4, Aceleration 4, Type 2
{
  If &Inhibit_OBS1 = 0
  {
     L0 = V304 * -1
     V100 = ROTATE 0, 359, L0
  }
}
Var 306, name E_HDG, Link IOCARD_ENCODER, Device 0, Input 6, Aceleration 4, Type 2
{
 	If &Inhibit_HDG = 0
	{
		If &Bank_act = 0
		{
			L0 = &E_HDG * -1
			&D_HDG = ROTATE 0, 359, L0
			&HDG_temp = &D_HDG
		}
		If &I_BANK_SW = 1
		{
			&D_HDG = &I_BANK_LIMIT
			L1 = &E_HDG * -5
			&D_HDG = LIMIT 10, 30, L1
			&I_BANK_LIMIT = &D_HDG
		}
		ELSE
		{
			&D_HDG = &HDG_temp
		}
	}
}
Var 308, name E_COURSE2, Link IOCARD_ENCODER, Device 0, Input 9, Aceleration 4, Type 2
{
  If &Inhibit_OBS2 = 0
  {
     L0 = V308 * -1
     V110 = ROTATE 0, 359, L0
  }
}
Var 310, name E_VS, Link IOCARD_ENCODER, Device 0, Input 11, Aceleration 4, Type 2
{
  If &Inhibit_VS = 0
  {
    L0 = V310 * -50
    V108 = LIMIT -7000, 7000, L0 
  }
  Else
  {
     &VS_Trigger = 1
  }
}

// Display Inhibit
// Display inhibit variables signal the blanking of the displays. They are written by Prosim
Var 320, name Inhibit_IAS
{
   If V320 = 1
   {
    &D_IAS = -999999
    V201 = 0
   }
   Else
   {
    V201 = &DECIMAL
   }
}

Var 322, name Inhibit_Alt
{
   If V322 = 1
   {
      &D_ALT = -999999
   }
}

Var 324, name Inhibit_OBS1
{
   If V324 = 1
   {
      &D_COURSE1 = -999999
   }
}

Var 326, name Inhibit_HDG
{
   If V326 = 1
   {
      &D_HDG = -999999
   }
}

Var 328, name Inhibit_OBS2
{
   If V328 = 1
   {
      &D_COURSE2 = -999999
   }
}

Var 330, name Inhibit_VS
{
   If V330 = 1
   {
      &D_VS = -999999
   }
}

// SWITCHES
// The MCP switches are read by Prosim
Var 400, name I_CO, Link IOCARD_SW, Device 0, Input 13
Var 402, name I_FD2, Link IOCARD_SW, Device 0, Input 14
Var 404, name I_DISENGAGE, Link IOCARD_SW, Device 0, Input 15
Var 406, name I_FD1, Link IOCARD_SW, Device 0, Input 16
Var 408, name I_CWSB, Link IOCARD_SW, Device 0, Input 18
Var 410, name I_CMDB, Link IOCARD_SW, Device 0, Input 19
Var 412, name I_CWSA, Link IOCARD_SW, Device 0, Input 20
Var 414, name I_CMDA, Link IOCARD_SW, Device 0, Input 21
Var 416, name I_VS, Link IOCARD_SW, Device 0, Input 22
Var 418, name I_ALTHLD, Link IOCARD_SW, Device 0, Input 23
Var 420, name I_APP, Link IOCARD_SW, Device 0, Input 24
Var 422, name I_VORLOC, Link IOCARD_SW, Device 0, Input 25
Var 424, name I_LNAV, Link IOCARD_SW, Device 0, Input 27
Var 426, name I_HDGSEL, Link IOCARD_SW, Device 0, Input 28
Var 428, name I_LVLCHG, Link IOCARD_SW, Device 0, Input 29
Var 430, name I_VNAV, Link IOCARD_SW, Device 0, Input 30
Var 432, name I_SPEED, Link IOCARD_SW, Device 0, Input 31
Var 434, name I_N1, Link IOCARD_SW, Device 0, Input 32
Var 436, name I_AT, Link IOCARD_SW, Device 0, Input 33
Var 438, name I_SPD_INTER, Link IOCARD_SW, Device 0, Input 37
Var 440, name I_ALT_INTER, Link IOCARD_SW, Device 0, Input 36
Var 442, name I_BANK_LIMIT, VALUE 10
Var 444, name I_BANK_SW, Link IOCARD_SW, Device 0, Input 34	// Activate bank limit
{
	If &I_BANK_SW = 1
	{
		&Bank_act = 1
		&D_HDG = &I_BANK_LIMIT
	}
	Else
	{
		&Bank_act = 0
		&D_HDG = &HDG_temp
	}
}

// ///////////////////////////
// END MCP
// ///////////////////////////



// ///////////////////////////
// CDU CAPT
// ///////////////////////////
Var 45, name CDUKey, Link IOCARD_KEYS, device 13  // Keyboard reading
Var 46, name CDUExec, Link IOCARD_OUT,  device 13, Output 2  // device
Var 47, name CDUFail, Link IOCARD_OUT, device 13, Output 4
Var 48, name CDUMSG, Link IOCARD_OUT,  device 13, Output 1
// ///////////////////////////
// END CDU CAPT
// ///////////////////////////



// ///////////////////////////
// CDU F/O
// ///////////////////////////
Var 50, name CDUKeyfo, Link IOCARD_KEYS, device 14  // Keyboard reading
Var 51, name CDUExecfo, Link IOCARD_OUT,  device 14, Output 2  // device
Var 52, name CDUFailfo, Link IOCARD_OUT, device 14, Output 4
Var 53, name CDUMSGfo, Link IOCARD_OUT,  device 14, Output 1
// ///////////////////////////
// END CDU F/O
// ///////////////////////////




// ///////////////////////////
// CHRONO CAPT
// ///////////////////////////

Var 0001, Value 0 // Inicializacion de valores de variables
{
&D_CHRBRIGHT = 120
&PARPADEO_U = 0
&PARPADEO_D = 1
&Time_Date_Year = 3 
&Disp_Year = &Zulu_Year_Set
&Year_to_Modif = &Zulu_Year_Set // Pasamos el ao a una vble interna
&Modif_Year = 0
&Estado_CHR = 1
&Estado_ET = 1
&CHR_ET_ToDisp = -1
&DECIMAL_C = 0
&Aguja_Segundos = 45
}


// ///////////////////////////////////////
// VARIABLES PROPIAS
// ///////////////////////////////////////

Var 3010, name Time_Date_Year // Indice para digitos Time-Date-Year
Var 3012, name Modif_Year // Activamos control modificacion ao. 0=Descativado, 1=Activado
Var 3014, name Modif_DDMM // Activamos control modificacion Dia.Mes -> 0=Descativado, 1=Mes 2=Da
Var 3015, name Modif_HHMM // Activamos control modificacion Hora.Minutos-> 0=Descativado, 1=Minutos 2=Horas
Var 3016, name Year_to_Modif // Guarda el ao para modificar
Var 3018, name DD_to_Modif // Guarda el Dia para modificar
Var 3020, name MM_to_Modif // Guarda el Mes para modificar
Var 3022, name CHR_ET_ToDisp // Controla si vemos el CHR o el ET en el display inferior. 0=CHR 1=ET
Var 3024, name CHR_Min // Acumula los Minutos del cronometro
Var 3026, name CHR_Sec // Acumula los Segundos del cronometro
Var 3028, name Estado_CHR // COntrola el estado del Botn CHR. 0 -> Pone Crono en display
// 2 -> Inicia CHR o contina
// 3 -> STOP Cronmetro.
Var 3030, name ET_Hr // Acumula las Horas del ET (Elapsed Time)
Var 3032, name ET_Min // Acumula los Minutos del ET (Elapsed Time)
Var 3034, name ET_Sec // Acumula los Segundos del ET (Elapsed Time)
Var 3036, name Estado_ET // COntrola el estado del Botn ET. 0 -> Pone ET en display
// 2 -> Inicia ET o contina
// 3 -> STOP ET 
Var 3037, name Limit_DD_Mes // Almacena el total de das que tiene el mes activo
Var 3038, name DayofYear // Almacena el da del ao


Var 3039, name M_MOTOR, Link IOCARD_MOTOR, Device 16, Output 1, Aceleration 200
Var 3040, name Aguja_Segundos
{
 L0 = 4065 / 60
 L0 = L0 * &Aguja_Segundos
 &M_MOTOR = ROUND L0
}

Var 3041, name PARPADEO_U, link SUBRUTINE
{
 &BLINK = 0
}

Var 3042, name PARPADEO_D, Link SUBRUTINE
{
 &BLINK2 = 0
}

Var 3043, name HH_to_Modif // Guarda la hora para modificar
Var 3044, name MI_to_Modif // Guarda los minutos para modificar


// ///////////////////////////////////////
// VARIABLES FSUIPC
// ///////////////////////////////////////

Var 3050, name Clock_Seconds, link FSUIPC_INOUT, offset $023A, length 1 // Segundos del Reloj del FS
{
 IF &Time_Date_Year = 1 // Visualizo el ao
  {
   IF &Modif_Year = 1 // Si estamos en activacion del control del ao 
   {
    &Disp_Year = &Year_to_Modif
    &Disp_Year = Delay -999999, 50
   }
  }
 IF &Time_Date_Year = 2 // Visualizo el dia y mes
  {
   IF &Modif_DDMM = 1 // Si estamos en activacion del control modificacion Mes
    {
     &Disp_Month_Min = &MM_to_Modif
     &Disp_Month_Min = Delay -999999, 50
     &Disp_Day_Hour = &DD_to_Modif 
    }
   IF &Modif_DDMM = 2 // Si estamos en activacion del control modificacion Da
    {
     &Disp_Day_Hour = &DD_to_Modif 
     &Disp_Day_Hour = Delay -999999, 50 
     &Disp_Month_Min = &MM_to_Modif
    }
  }
 IF &Time_Date_Year = 3 // Visualizo la hora Zulu
  {
   CALL &Show_Display
   IF &Modif_HHMM = 1 // Si estamos en activacion del control modificacion Minutos
    {
     &Disp_Month_Min = &MI_to_Modif
     &Disp_Month_Min = Delay -999999, 50
     &Disp_Day_Hour = &HH_to_Modif
    }
   IF &Modif_HHMM = 2 // Si estamos en activacion del control modificacion Horas
    {
     &Disp_Day_Hour = &HH_to_Modif 
     &Disp_Day_Hour = Delay -999999, 50 
     &Disp_Month_Min = &MI_to_Modif
    }
  }
 IF &Time_Date_Year = 4 // Visualizo Minutos y Segundos
  {
   CALL &Show_Display
  }
 IF &Estado_CHR = 2 // 2 -> Inicia CHR o contina
  {
   IF &CHR_ET_ToDisp = 0 
    {
     &PARPADEO_D = 1
    }
   &CHR_Sec = &CHR_Sec + 1
   IF &CHR_Sec > 59
    {
     &CHR_Sec = 0
     &CHR_Min = &CHR_Min + 1
     IF &CHR_Min > 59 // Cuando llegamos a 1 hora se pone a cero
      {
       &CHR_Min = 0
      }
    }
   &Aguja_Segundos = &CHR_Sec // Movemos la aguja de los segundos si el CHR esta funcionando
  }
 IF &Estado_ET = 2 // 2 -> Inicia ET o contina
  {
   IF &CHR_ET_ToDisp = 1 
    {
     &PARPADEO_D = 1
    }
  &ET_Sec = &ET_Sec + 1
  IF &ET_Sec > 59
   {
    &ET_Sec = 0
    &ET_Min = &ET_Min + 1
    IF &ET_Min > 59
     {
      &ET_Min = 0
      &ET_Hr = &ET_Hr + 1
     }
   }
  }
 IF &CHR_ET_ToDisp = 0 // Mostramos el CHR en los displays inferiores
  {
   Call &Ver_CHR
  }
 ELSE // Mostramos el ET en los displays inferiores
 {
 IF &CHR_ET_ToDisp = 1
  {
   Call &Ver_ET
  }
 }
}

Var 3052, name Zulu_Hour, link FSUIPC_INOUT, offset $023B, length 1 // Hora Zulu. Lectura y escritura
{
 CALL &Show_Display
}

Var 3054, name Zulu_Minute, link FSUIPC_INOUT, offset $023C, length 1 // Minutos Zulu. Lectura y escritura
{
 CALL &Show_Display
}

Var 3056, name Day_of_Year, link FSUIPC_INOUT, offset $023E, length 2 // Numero del da del ao. Lectura y escritura. Numero total de dias al ao


Var 3058, name Day_of_Month, link FSUIPC_IN, offset $023D, length 1 // Da del mes correspondiente. Slo lectura
{
 CALL &Show_Display
}

Var 3060, name Current_Month, link FSUIPC_IN, offset $0242, length 1 // Numero del mes. Slo lectura
{
 CALL &Show_Display
}

Var 3062, name Zulu_Year_Set, link FSUIPC_INOUT, offset $0240, length 2 // Ao. Lectura y escritura
{
 &Year_to_Modif = &Zulu_Year_Set
 Call &Chk_Bisiesto // Comprobamos si es bisiesto
}

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES IOCARDS ------------ DISPLAYS ------------
// /////////////////////////////////////////////////////////////////////////////////////////

Var 0900, name Disp_Year, Link IOCARD_DISPLAY, Device 16, Digit 0, Numbers 4 // UP Displays Year
Var 0901, name Disp_Day_Hour, Link IOCARD_DISPLAY, Device 16, Digit 2, Numbers 2 // UP Displays Day or Hour
Var 0902, name Disp_Month_Min, Link IOCARD_DISPLAY, Device 16, Digit 0, Numbers 2 // UP Displays Month or Minutes
Var 0904, name Disp_DWN_Min, Link IOCARD_DISPLAY, Device 16, Digit 6, Numbers 2 // Down Displays CHR - ET -> Min
Var 0905, name Disp_DWN_Sec, Link IOCARD_DISPLAY, Device 16, Digit 4, Numbers 2 // Down Displays CHR - ET -> Sec
Var 0908, name D_CHRBRIGHT, Link IOCARD_DISPLAY, Device 16, Digit 16, Numbers 3

Var 0913, name DECIMAL_U, Link IOCARD_OUT, Device 16, Output 20
Var 0914, name DECIMAL_D, Link IOCARD_OUT, Device 16, Output 21
Var 0915, name DECIMAL_C, Link IOCARD_OUT, Device 16, Output 22

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES IOCARDS ------------ ENTRADAS ------------
// /////////////////////////////////////////////////////////////////////////////////////////

Var 0916, name SW_Time_Date, Link IOCARD_SW, Device 16, Input 1, Type P // Botn TIME-DATE
{
IF &Modif_Year = 0 // Si NO estamos en activacion del control del Ao-Set (Botn SET)
{
  &Time_Date_Year = &Time_Date_Year + 1
  IF &Modif_DDMM > 0 // Si estoy modificando dia del mes o el mes
  {
    &Modif_DDMM = 0
  }
  IF &Modif_HHMM > 0 // Si estoy modificando dia hora o minutos
  {
    &Modif_HHMM = 0
  }
}
IF &Time_Date_Year > 4 // Comprobamos si nos salimos de margenes
{
  &Time_Date_Year = 1 // Ponemos a 1 
}
Call &Show_Display // Mostramos en displays el dato correspondiente
If &Estado_CHR = 3 // Si el CHR esta parado
{
  // &Aguja_Segundos = 9000 // Movemos la aguja de los segundos a 15 para ver los displays mejor
}
}
Var 0917, name SW_SET, Link IOCARD_SW, Device 16, Input 2, Type P // Botn SET
{
  IF &Time_Date_Year = 1 // Si estoy visualizando el ao
  {
    IF &Modif_Year = 0 // Si NO estoy modificando el ao
    {
      &Modif_Year = 1 // Activamos control modificacion ao
      &Year_to_Modif = &Zulu_Year_Set // Pasamos el ao a una vble para modificar
    }
    else
    {
      Call &Chk_Bisiesto // Comprobamos si es bisiesto
      call &calc_DayofYear
      &Day_of_Year = &DayofYear // Devolvemos el da al FS para que lo modifique
      &Modif_Year = 0 // Desactivamos control modificacion ao
      &Zulu_Year_Set = &Year_to_Modif // Devolvemos el ao al FS para que lo modifique
      Call &Show_Display // Mostramos el ao
    }
  }
  IF &Time_Date_Year = 2 // Si estoy visualizando el dia del mes y el mes (DD.MM)
  {
    IF &Modif_DDMM = 0 // Si NO estoy modificando dia del mes y el mes
    {
      &Modif_DDMM = 1 // Activamos control modificacion Mes
      &MM_to_Modif = &Current_Month // Pasamos el mes a una vble para modificar
      &DD_to_Modif = &Day_of_Month
      &PARPADEO_U = 0
    }
    else
    {
      IF &Modif_DDMM = 1 // Si estamos modificando el mes pasamos a modificar el da
      {
        Call &Chk_DiasDelMes // Calculamos cuantos dias tiene el mes que hemos modificado
        &Modif_DDMM = 2 // Activamos control modificacion Da
        &DD_to_Modif = &Day_of_Month // Pasamos el da a una vble para modificar
        &Disp_Month_Min = Delay &MM_to_Modif, 50
      }
      else // Terminamos de modificar as que mandamos valores al FS
      {
        call &calc_DayofYear
        &Day_of_Year = &DayofYear // Devolvemos el da al FS para que lo modifique
        &PARPADEO_U = 2
        &Modif_DDMM = 0
        call &Show_Display
        &show_Display = Delay 1, 50
      }
    }
  }
  IF &Time_Date_Year = 3 // Si estoy visualizando el dia del Hora y minutos (HH.MM)
  {
    IF &Modif_HHMM = 0 // Si NO estoy modificando Nada
    {
      &Modif_HHMM = 1 // Activamos control modificacion Minutos
      &MI_to_Modif = &Zulu_Minute // Pasamos minutos
      &HH_to_Modif = &Zulu_Hour // Pasamos Horas 
      &PARPADEO_U = 0
    }
    else
    {
      IF &Modif_HHMM = 1 // Si estamos modificando Minutos pasamos a modificar Horas
      {
        // Call &Chk_DiasDelMes 
        &Modif_HHMM = 2 // Activamos control modificacion Da
        &HH_to_Modif = &Zulu_Hour // Pasamos el da a una vble para modificar *OJO*
        &Disp_Month_Min = Delay &MI_to_Modif, 50
      }
      else // Terminamos de modificar as que mandamos valores al FS
      {
        //call &calc_DayofYear
        //&Day_of_Year = &DayofYear // Devolvemos el da al FS para que lo modifique *OJO*
        &Zulu_Hour = &HH_to_Modif
	&Zulu_Minute = &MI_to_Modif
        &PARPADEO_U = 2
        &Modif_HHMM = 0
        call &Show_Display
        &show_Display = Delay 1, 50
      }
    }
  }
}
Var 0924, name SW_CHR, Link IOCARD_SW, Device 16, Input 0 //  Botn CHR 
{
if &SW_CHR = 1 
{
if &CHR_ET_ToDisp = -1
{
  &CHR_ET_ToDisp = 0
  &Aguja_Segundos = 0
  &DECIMAL_C = 1
  &DECIMAL_D = 1
}
else
{ 
&DECIMAL_C = 1
Call &Ver_CHR
If &CHR_ET_ToDisp = 1 // Venimos de la Funcin ET
{
&CHR_ET_ToDisp = 0 // Acivamos control sobre el display para CHR
}
else // Ya estabamos en la funcin CHR 
{
&Estado_CHR = &Estado_CHR + 1 // Cambiamos el estado de CHR
}
If &Estado_CHR > 3 // Comprobamos limite del estado del CHR 
{ 
&Estado_CHR = 2 // 2 -> Inicia CHR o contina 3 -> STOP Cronmetro.
}
If &Estado_CHR <> 2
{
  &PARPADEO_D = 2
}
}
}
}

Var 0925, name SW_ET, Link IOCARD_SW, Device 16, Input 6, type P // Botn ET
{
if &CHR_ET_ToDisp = -1
{
  &CHR_ET_ToDisp = 0
  &Aguja_Segundos = 0
  &DECIMAL_C = 1
  &DECIMAL_D = 1
} 
else
{
&DECIMAL_C = 0
Call &Ver_ET
If &CHR_ET_ToDisp = 0 // Venimos de la Funcin CHR
{
&CHR_ET_ToDisp = 1 // Acivamos control sobre el display para ET
}
else // Ya estabamos en la funcin ET
{
&Estado_ET = &Estado_ET + 1 // Cambiamos el estado de ET
}
If &Estado_ET > 3 // Comprobamos limite del estado del ET
{ 
&Estado_ET = 2 // 2 -> Inicia ET o contina 3 -> STOP ET
}
If &Estado_ET <> 2
{
  &PARPADEO_D = 2
}
}
}

Var 0926, Link IOCARD_SW, Device 16, Input 5, type P //  Botn RST
{
if &SW_CHR = 1 
{
  &CHR_ET_ToDisp = -1
  &Estado_CHR = 1
  &Estado_ET = 1
  &DECIMAL_C = 1
  &Aguja_Segundos = 45  
  &Disp_DWN_Min = -999999
  &Disp_DWN_Sec = -999999
  &DECIMAL_D = 0
  &CHR_Min = 0
  &CHR_Sec = 0
  &ET_Hr = 0
  &ET_Min = 0
  &ET_Sec = 0
 &DECIMAL_C = 0
}
else
{
if &CHR_ET_ToDisp = -1
{
  &CHR_ET_ToDisp = 0
  &Aguja_Segundos = 0
  &DECIMAL_C = 1
  &DECIMAL_D = 1
} 
else
{
If &CHR_ET_ToDisp = 0
{
&CHR_Min = 0 // Ponemos a cero los minutos del CHR
&CHR_Sec = 0 // Ponemos a cero los segundos del CHR
&Aguja_Segundos = 0
Call &Ver_CHR 
}
else
{
&ET_Hr = 0 // Ponemos a cero la hora del ET
&ET_Min = 0 // Ponemos a cero los minutos del ET
&ET_Sec = 0 // Ponemos a cero los segundos del ET
Call &Ver_ET
} 
}
}
}

Var 0927, Link IOCARD_SW, Device 16, Input 3, type P // Botn +
{
  IF &Modif_Year = 1 // Si estamos en activacion del control del ao
  {
    &Year_to_Modif = &Year_to_Modif + 1
    &Disp_Year = &Year_to_Modif
  }
  IF &Modif_DDMM = 1 // Si estamos en activacion del control del Mes
  {
    &MM_to_Modif = &MM_to_Modif + 1
    If &MM_to_Modif > 12
    {
      &MM_to_Modif = 1
    }
    &Disp_Month_Min = &MM_to_Modif 
  }
  IF &Modif_DDMM = 2 // Si estamos en activacion del control del Da
  {
    &DD_to_Modif = &DD_to_Modif + 1
    If &DD_to_Modif > &Limit_DD_Mes 
    {
      &DD_to_Modif = 1
    }
    &Disp_Day_Hour = &DD_to_Modif 
  }
  IF &Modif_HHMM = 1 // Si estamos en activacion del control de Minutos
  {
    &MI_to_Modif = &MI_to_Modif + 1
    If &MI_to_Modif > 59
    {
      &MI_to_Modif = 0
    }
    &Disp_Month_Min = &MI_to_Modif 
  }
  IF &Modif_HHMM = 2 // Si estamos en activacion del control de Horas
  {
    &HH_to_Modif = &HH_to_Modif + 1
    If &HH_to_Modif > 23
    {
      &HH_to_Modif = 0
    }
    &Disp_Day_Hour = &HH_to_Modif 
  }
}
Var 0928, Link IOCARD_SW, Device 16, Input 4, type P // Botn -
{
IF &Modif_Year = 1 // Si estamos en activacion del control del ao
{
&Year_to_Modif = &Year_to_Modif - 1
&Disp_Year = &Year_to_Modif
}
IF &Modif_DDMM = 1 // Si estamos en activacion del control del Mes
{
&MM_to_Modif = &MM_to_Modif - 1
If &MM_to_Modif < 1
{
&MM_to_Modif = 12
}
&Disp_Month_Min = &MM_to_Modif 
}
IF &Modif_DDMM = 2 // Si estamos en activacion del control del Da
{
&DD_to_Modif = &DD_to_Modif - 1
If &DD_to_Modif < 1
{
&DD_to_Modif = &Limit_DD_Mes 
}
&Disp_Day_Hour = &DD_to_Modif 
}
  IF &Modif_HHMM = 1 // Si estamos en activacion del control de Minutos
  {
    &MI_to_Modif = &MI_to_Modif - 1
    If &MI_to_Modif < 0
    {
      &MI_to_Modif = 59
    }
    &Disp_Month_Min = &MI_to_Modif 
  }
  IF &Modif_HHMM = 2 // Si estamos en activacion del control de Horas
  {
    &HH_to_Modif = &HH_to_Modif - 1
    If &HH_to_Modif < 0
    {
      &HH_to_Modif = 23
    }
    &Disp_Day_Hour = &HH_to_Modif 
  }
}


// /////////////////////////////////////////////////////////////////////////////////////////
// SUBRUTINAS
// /////////////////////////////////////////////////////////////////////////////////////////


Var 2000, name Show_Display, Link SUBRUTINE // Muestra el ao
{
&PARPADEO_U = 0

IF &Time_Date_Year = 1 // Visualizo el ao
{
&Disp_Year = -999999 // Apagamos el ao 
&Disp_Year = &Zulu_Year_Set 
}
IF &Time_Date_Year = 2 // Visualizo el dia y mes
{
&Disp_Day_Hour = &Day_of_Month 
&Disp_Month_Min = &Current_Month 
&PARPADEO_U = 2
}
IF &Time_Date_Year = 3 // Visualizo la hora Zulu y Minutos
{
&Disp_Day_Hour = &Zulu_Hour 
&Disp_Month_Min = &Zulu_Minute 
&PARPADEO_U = 1
}
IF &Time_Date_Year = 4 // Visualizo Minutos y Segundos
{
&Disp_Day_Hour = &Zulu_Minute 
&Disp_Month_Min = &Clock_Seconds 
&PARPADEO_U = 1
}
}
Var 2002, name Ver_CHR, Link SUBRUTINE // Pasa CHR al display
{
&Disp_DWN_Min = &CHR_Min // Mostramos los minutos del CHR en Display Down
&Disp_DWN_Sec = &CHR_Sec // Mostramos los minutos del CHR en Display Down
}
Var 2004, name Ver_ET, Link SUBRUTINE // Pasa ET al display
{
If &ET_Hr = 0 // Durante la primera hora mostramos MM:SS
{
&Disp_DWN_Min = &ET_Min // Mostramos los minutos del ET en Display Down
&Disp_DWN_Sec = &ET_Sec // Mostramos los segundos del ET en Display Down 
} 
else // Despues mostramos HH:MM
{
&Disp_DWN_Min = &ET_Hr // Mostramos la hora del ET en Display Down
&Disp_DWN_Sec = &ET_Min // Mostramos los minutos del ET en Display Down
}
}
Var 2006, name Chk_Bisiesto, Link SUBRUTINE // Comprueba si el ao es bisisesto
{ 
L0 = MOD &Zulu_Year_Set ,4 // L0 acumula el resto de la divisin
IF L0 = 0
{
&Chk_Bisiesto = 1 // No Bisiesto = 0 Bisiesto = 1
}
ELSE
{
L0 = MOD &Zulu_Year_Set ,400
IF L0 = 0
{
L0 = MOD &Zulu_Year_Set ,100
IF L0 = 0
{
&Chk_Bisiesto = 1 // No Bisiesto = 0 Bisiesto = 1
} 
ELSE
{
&Chk_Bisiesto = 0 // No Bisiesto = 0 Bisiesto = 1
}
}
ELSE
{
&Chk_Bisiesto = 0 // No Bisiesto = 0 Bisiesto = 1
}
}
}
Var 2008, name Chk_DiasDelMes, Link SUBRUTINE // Calcula cuantos das tiene el mes
// 31 das tienen ENE, MAR, MAY, JUL, AGO, OCT, DIC
// 30 das tienen ABR, JUN, SEP, NOV
// 28 das tiene FEB excepto los bisiestos que tiene 29
{
If &MM_to_Modif = 1 // ENE
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 2 // FEB
{
If &Chk_Bisiesto = 0 // Si no es bisiesto
{ 
&Limit_DD_Mes = 28
}
else // Si es bisiesto
{
&Limit_DD_Mes = 29
}
}
If &MM_to_Modif = 3 // MAR
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 4 // ABR
{
&Limit_DD_Mes = 30
}
If &MM_to_Modif = 5 // MAY
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 6 // JUN
{
&Limit_DD_Mes = 30
}
If &MM_to_Modif = 7 // JUL
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 8 // AGO
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 9 // SEP
{
&Limit_DD_Mes = 30
}
If &MM_to_Modif = 10 // OCT
{
&Limit_DD_Mes = 31
}
If &MM_to_Modif = 11 // NOV
{
&Limit_DD_Mes = 30
}
If &MM_to_Modif = 12 // DIC
{
&Limit_DD_Mes = 31
}
}

Var 2010, name Calc_DayofYear, Link SUBRUTINE // Calcula el dia del mes en relacion al ao total
// // As el 1 de ENE es el calc_DayofYear = 1 y el 
// // 31 de DIC es el 365 excepto en bisiesto que es el 366
{
If &MM_to_Modif = 1 // ENE 31 
{
&DayofYear = &DD_to_Modif // Paso a Calc_DayofYear el da del mes de Enero
}
If &MM_to_Modif = 2 // FEB 28
{
&DayofYear = &DD_to_Modif + 31 // Le sumo a los das del mes los del mes anterior
}
If &MM_to_Modif = 3 // MAR 31 
{
&DayofYear = &DD_to_Modif + 59 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 4 // ABR 30 
{
&DayofYear = &DD_to_Modif + 90 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 5 // MAY 31 
{
&DayofYear = &DD_to_Modif + 120 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 6 // JUN 30 
{
&DayofYear = &DD_to_Modif + 151 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 7 // JUL 31 
{
&DayofYear = &DD_to_Modif + 181 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 8 // AGO 31 
{
&DayofYear = &DD_to_Modif + 212 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 9 // SEP 30 
{
&DayofYear = &DD_to_Modif + 243 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 10 // OCT 31 
{
&DayofYear = &DD_to_Modif + 273 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 11 // NOV 30 
{
&DayofYear = &DD_to_Modif + 304 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif = 12 // DIC 31 
{
&DayofYear = &DD_to_Modif + 334 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif > 1
{
If &Chk_Bisiesto = 1 // Si es bisiesto
{ 
&DayofYear = &DayofYear + 1
}
} 
&Current_Month = &MM_to_Modif
&Day_of_Month = &DD_to_Modif
}
Var 2012, name BLINK, Link SUBRUTINE
{
  IF &BLINK = 0
  {
    IF &PARPADEO_U = 0   // No parpadea y queda apagado
    {
       &DECIMAL_U = 0
    }
    IF &PARPADEO_U = 1  // Parpadea
    {
       &DECIMAL_U = 1
       &BLINK = DELAY 1, 50
    }
    IF &PARPADEO_U = 2   // No parpadea y queda encendido
    {
       &DECIMAL_U = 1
    }
  }
  ELSE
  {
    IF &PARPADEO_U = 0
    {
       &DECIMAL_U = 0
    }
    IF &PARPADEO_U = 1
    {
       &DECIMAL_U = 0
    }
    IF &PARPADEO_U = 2
    {
       &DECIMAL_U = 1
    }
  }
}
Var 2014, name BLINK2, Link SUBRUTINE
{
  IF &BLINK2 = 0
  {
    IF &PARPADEO_D = 0   // No parpadea y queda apagado
    {
       &DECIMAL_D = 0
    }
    IF &PARPADEO_D = 1  // Parpadea
    {
       &DECIMAL_D = 1
       &BLINK2 = DELAY 1, 50
    }
    IF &PARPADEO_D = 2   // No parpadea y queda encendido
    {
       &DECIMAL_D = 1
    }
  }
  ELSE
  {
    IF &PARPADEO_D = 0
    {
       &DECIMAL_D = 0
    }
    IF &PARPADEO_D = 1
    {
       &DECIMAL_D = 0
    }
    IF &PARPADEO_D = 2
    {
       &DECIMAL_D = 1
    }
  }
}


// //////////////////////////////////////
// END CHRONO CAPT
// //////////////////////////////////////





// ///////////////////////////
// CHRONO F/O
// ///////////////////////////

Var 0002, Value 0 // Inicializacion de valores de variables
{
&D_CHRBRIGHT2 = 120
&PARPADEO_U2 = 0
&PARPADEO_D2 = 1
&2Date_Year = 3 
&Disp_Year2 = &Zulu_Year_Set2
&Year_to_Modif2 = &Zulu_Year_Set2 // Pasamos el ao a una vble interna
&Modif_Year2 = 0
&Estado_CHR2 = 1
&Estado_ET2 = 1
&CHR_ET_ToDisp2 = -1
&DECIMAL_C2 = 0
&Aguja_Segs2 = 45
}

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES PROPIAS
// /////////////////////////////////////////////////////////////////////////////////////////

Var 4000, name 2Date_Year // Indice para digitos Time-Date-Year
Var 4002, name Modif_Year2 // Activamos control modificacion ao. 0=Descativado, 1=Activado
Var 4004, name Modif_DDMM2 // Activamos control modificacion Dia.Mes -> 0=Descativado, 1=Mes 2=Da
Var 4006, name Modif_HHMM2 // Activamos control modificacion Hora.Minutos-> 0=Descativado, 1=Minutos 2=Horas
Var 4008, name Year_to_Modif2 // Guarda el ao para modificar
Var 4010, name DD_to_Modif2 // Guarda el Dia para modificar
Var 4012, name MM_to_Modif2 // Guarda el Mes para modificar
Var 4014, name CHR_ET_ToDisp2 // Controla si vemos el CHR o el ET en el display inferior. 0=CHR 1=ET
Var 4016, name CHR_Min2 // Acumula los Minutos del cronometro
Var 4018, name CHR_Sec2 // Acumula los Segundos del cronometro
Var 4020, name Estado_CHR2 // COntrola el estado del Botn CHR. 0 -> Pone Crono en display
// 2 -> Inicia CHR o contina
// 3 -> STOP Cronmetro.
Var 4022, name ET_Hr2 // Acumula las Horas del ET (Elapsed Time)
Var 4024, name ET_Min2 // Acumula los Minutos del ET (Elapsed Time)
Var 4026, name ET_Sec2 // Acumula los Segundos del ET (Elapsed Time)
Var 4028, name Estado_ET2 // COntrola el estado del Botn ET. 0 -> Pone ET en display
// 2 -> Inicia ET o contina
// 3 -> STOP ET 
Var 4030, name Limit_DD_Mes2 // Almacena el total de das que tiene el mes activo
Var 4032, name DayofYear2 // Almacena el da del ao


Var 4034, name M_MOTOR2, Link IOCARD_MOTOR, Device 161, Output 1, Aceleration 200
Var 4036, name Aguja_Segs2
{
    L0 = 4065 / 60
    L0 = L0 * &Aguja_Segs2
    &M_MOTOR2 = ROUND L0
}
Var 4038, name PARPADEO_U2, link SUBRUTINE
{
  &BLINK3 = 0
}
Var 4040, name PARPADEO_D2, Link SUBRUTINE
{
  &BLINK4 = 0
}
Var 4042, name HH_to_Modif2 // Guarda la hora para modificar
Var 4044, name MI_to_Modif2 // Guarda los minutos para modificar

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES FSUIPC
// /////////////////////////////////////////////////////////////////////////////////////////

Var 4046, name Clock_Seconds2, link FSUIPC_INOUT, offset $023A, length 1 // Segundos del Reloj del FS
{
IF &2Date_Year = 1 // Visualizo el ao
{
IF &Modif_Year2 = 1 // Si estamos en activacion del control del ao 
{
&Disp_Year2 = &Year_to_Modif2
&Disp_Year2 = Delay -999999, 50
}
}
IF &2Date_Year = 2 // Visualizo el dia y mes
{
  IF &Modif_DDMM2 = 1 // Si estamos en activacion del control modificacion Mes
  {
    &DispMonthMin2 = &MM_to_Modif2
    &DispMonthMin2 = Delay -999999, 50
    &Disp_Day_Hour2 = &DD_to_Modif2
  }
  IF &Modif_DDMM2 = 2 // Si estamos en activacion del control modificacion Da
  {
    &Disp_Day_Hour2 = &DD_to_Modif2 
    &Disp_Day_Hour2 = Delay -999999, 50 
    &DispMonthMin2 = &MM_to_Modif2
  }
}
IF &2Date_Year = 3 // Visualizo la hora Zulu
{
  CALL &Show_Display2
  IF &Modif_HHMM2 = 1 // Si estamos en activacion del control modificacion Minutos
  {
    &DispMonthMin2 = &MI_to_Modif2
    &DispMonthMin2 = Delay -999999, 50
    &Disp_Day_Hour2 = &HH_to_Modif2
  }
  IF &Modif_HHMM2 = 2 // Si estamos en activacion del control modificacion Horas
  {
    &Disp_Day_Hour2 = &HH_to_Modif2 
    &Disp_Day_Hour2 = Delay -999999, 50 
    &DispMonthMin2 = &MI_to_Modif2
  }
}

IF &2Date_Year = 4 // Visualizo Minutos y Segundos
{
  CALL &Show_Display2
}

If &Estado_CHR2 = 2 // 2 -> Inicia CHR o contina
{
IF &CHR_ET_ToDisp2 = 0 
{
  &PARPADEO_D2 = 1
}
&CHR_Sec2 = &CHR_Sec2 + 1
If &CHR_Sec2 > 59
{
&CHR_Sec2 = 0
&CHR_Min2 = &CHR_Min2 + 1
If &CHR_Min2 > 59 // Cuando llegamos a 1 hora se pone a cero
{
&CHR_Min2 = 0
}
}
&Aguja_Segs2 = &CHR_Sec2 // Movemos la aguja de los segundos si el CHR esta funcionando
}

If &Estado_ET2 = 2 // 2 -> Inicia ET o contina
{
IF &CHR_ET_ToDisp2 = 1 
{
  &PARPADEO_D2 = 1
}

&ET_Sec2 = &ET_Sec2 + 1
If &ET_Sec2 > 59
{
&ET_Sec2 = 0
&ET_Min2 = &ET_Min2 + 1
If &ET_Min2 > 59
{
&ET_Min2 = 0
&ET_Hr2 = &ET_Hr2 + 1
}
}
}
If &CHR_ET_ToDisp2 = 0 // Mostramos el CHR en los displays inferiores
{
Call &Ver_CHR2
}
else // Mostramos el ET en los displays inferiores
{
if &CHR_ET_ToDisp2 = 1
{
Call &Ver_ET2
}
}
}

Var 4048, name Zulu_Hour2, link FSUIPC_INOUT, offset $023B, length 1 // Hora Zulu. Lectura y escritura
{
CALL &Show_Display2
}

Var 4050, name Zulu_Minute2, link FSUIPC_INOUT, offset $023C, length 1 // Minutos Zulu. Lectura y escritura
{
CALL &Show_Display2
}

Var 4052, name Day_of_Year2, link FSUIPC_INOUT, offset $023E, length 2 // Numero del da del ao. Lectura y escritura. Numero total de dias al ao


Var 4054, name DayofMonth2, link FSUIPC_IN, offset $023D, length 1 // Da del mes correspondiente. Slo lectura
{
CALL &Show_Display2
}

Var 4056, name Current_Month2, link FSUIPC_IN, offset $0242, length 1 // Numero del mes. Slo lectura
{
CALL &Show_Display2
}

Var 4058, name Zulu_Year_Set2, link FSUIPC_INOUT, offset $0240, length 2 // Ao. Lectura y escritura
{
&Year_to_Modif2 = &Zulu_Year_Set2
Call &Chk_Bisiesto2 // Comprobamos si es bisiesto
}

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES IOCARDS ------------ DISPLAYS ------------
// /////////////////////////////////////////////////////////////////////////////////////////

Var 4060, name Disp_Year2, Link IOCARD_DISPLAY, Device 161, Digit 0, Numbers 4 // UP Displays Year
Var 4062, name Disp_Day_Hour2, Link IOCARD_DISPLAY, Device 161, Digit 2, Numbers 2 // UP Displays Day or Hour
Var 4064, name DispMonthMin2, Link IOCARD_DISPLAY, Device 161, Digit 0, Numbers 2 // UP Displays Month or Minutes
Var 4068, name Disp_DWN_Min2, Link IOCARD_DISPLAY, Device 161, Digit 6, Numbers 2 // Down Displays CHR - ET -> Min
Var 4070, name Disp_DWN_Sec2, Link IOCARD_DISPLAY, Device 161, Digit 4, Numbers 2 // Down Displays CHR - ET -> Sec
Var 4072, name D_CHRBRIGHT2, Link IOCARD_DISPLAY, Device 161, Digit 16, Numbers 3

Var 4074, name DECIMAL_U2, Link IOCARD_OUT, Device 161, Output 20
Var 4076, name DECIMAL_D2, Link IOCARD_OUT, Device 161, Output 21
Var 4078, name DECIMAL_C2, Link IOCARD_OUT, Device 161, Output 22

// /////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES IOCARDS ------------ ENTRADAS ------------
// /////////////////////////////////////////////////////////////////////////////////////////

Var 4080, name SW_Time_Date2, Link IOCARD_SW, Device 161, Input 1, Type P // Botn TIME-DATE
{
IF &Modif_Year2 = 0 // Si NO estamos en activacion del control del Ao-Set (Botn SET)
{
  &2Date_Year = &2Date_Year + 1
  IF &Modif_DDMM2 > 0 // Si estoy modificando dia del mes o el mes
  {
    &Modif_DDMM2 = 0
  }
  IF &Modif_HHMM2 > 0 // Si estoy modificando dia hora o minutos
  {
    &Modif_HHMM2 = 0
  }
}
IF &2Date_Year > 4 // Comprobamos si nos salimos de margenes
{
  &2Date_Year = 1 // Ponemos a 1 
}
Call &Show_Display2 // Mostramos en displays el dato correspondiente
If &Estado_CHR2 = 3 // Si el CHR esta parado
{
  // &Aguja_Segs2 = 9000 // Movemos la aguja de los segundos a 15 para ver los displays mejor
}
}

Var 4082, name SW_SET2, Link IOCARD_SW, Device 161, Input 2, Type P // Botn SET
{
  IF &2Date_Year = 1 // Si estoy visualizando el ao
  {
    IF &Modif_Year2 = 0 // Si NO estoy modificando el ao
    {
      &Modif_Year2 = 1 // Activamos control modificacion ao
      &Year_to_Modif2 = &Zulu_Year_Set2 // Pasamos el ao a una vble para modificar
    }
    else
    {
      Call &Chk_Bisiesto2 // Comprobamos si es bisiesto
      call &Calc_DayYear2
      &Day_of_Year2 = &DayofYear2 // Devolvemos el da al FS para que lo modifique
      &Modif_Year2 = 0 // Desactivamos control modificacion ao
      &Zulu_Year_Set2 = &Year_to_Modif2 // Devolvemos el ao al FS para que lo modifique
      Call &Show_Display2 // Mostramos el ao
    }
  }
  IF &2Date_Year = 2 // Si estoy visualizando el dia del mes y el mes (DD.MM)
  {
    IF &Modif_DDMM2 = 0 // Si NO estoy modificando dia del mes y el mes
    {
      &Modif_DDMM2 = 1 // Activamos control modificacion Mes
      &MM_to_Modif2 = &Current_Month2 // Pasamos el mes a una vble para modificar
      &DD_to_Modif2 = &DayofMonth2
      &PARPADEO_U2 = 0
    }
    else
    {
      IF &Modif_DDMM2 = 1 // Si estamos modificando el mes pasamos a modificar el da
      {
        Call &Chk_DiasMes2 // Calculamos cuantos dias tiene el mes que hemos modificado
        &Modif_DDMM2 = 2 // Activamos control modificacion Da
        &DD_to_Modif2 = &DayofMonth2 // Pasamos el da a una vble para modificar
        &DispMonthMin2 = Delay &MM_to_Modif2, 50
      }
      else // Terminamos de modificar as que mandamos valores al FS
      {
        call &Calc_DayYear2
        &Day_of_Year2 = &DayofYear2 // Devolvemos el da al FS para que lo modifique
        &PARPADEO_U2 = 2
        &Modif_DDMM2 = 0
        call &Show_Display2
        &show_Display2 = Delay 1, 50
      }
    }
  }
  IF &2Date_Year = 3 // Si estoy visualizando el dia del Hora y minutos (HH.MM)
  {
    IF &Modif_HHMM2 = 0 // Si NO estoy modificando Nada
    {
      &Modif_HHMM2 = 1 // Activamos control modificacion Minutos
      &MI_to_Modif2 = &Zulu_Minute2 // Pasamos minutos
      &HH_to_Modif2 = &Zulu_Hour2 // Pasamos Horas 
      &PARPADEO_U2 = 0
    }
    else
    {
      IF &Modif_HHMM2 = 1 // Si estamos modificando Minutos pasamos a modificar Horas
      {
        // Call &Chk_DiasMes2
        &Modif_HHMM2 = 2 // Activamos control modificacion Da
        &HH_to_Modif2 = &Zulu_Hour2 // Pasamos el da a una vble para modificar *OJO*
        &DispMonthMin2 = Delay &MI_to_Modif2, 50
      }
      else // Terminamos de modificar as que mandamos valores al FS
      {
        //call &Calc_DayYear2
        //&Day_of_Year2 = &DayofYear2 // Devolvemos el da al FS para que lo modifique *OJO*
        &Zulu_Hour2 = &HH_to_Modif2
	&Zulu_Minute2 = &MI_to_Modif2
        &PARPADEO_U2 = 2
        &Modif_HHMM2 = 0
        call &Show_Display2
        &show_Display2 = Delay 1, 50
      }
    }
  }
}


Var 4084, name SW_CHR2, Link IOCARD_SW, Device 161, Input 0 // Botn CHR 
{
if &SW_CHR2 = 1 
{
if &CHR_ET_ToDisp2 = -1
{
  &CHR_ET_ToDisp2 = 0
  &Aguja_Segs2 = 0
  &DECIMAL_C2 = 1
  &DECIMAL_D2 = 1
}
else
{ 
&DECIMAL_C2 = 1
Call &Ver_CHR2
If &CHR_ET_ToDisp2 = 1 // Venimos de la Funcin ET
{
&CHR_ET_ToDisp2 = 0 // Acivamos control sobre el display para CHR
}
else // Ya estabamos en la funcin CHR 
{
&Estado_CHR2 = &Estado_CHR2 + 1 // Cambiamos el estado de CHR
}
If &Estado_CHR2 > 3 // Comprobamos limite del estado del CHR 
{ 
&Estado_CHR2 = 2 // 2 -> Inicia CHR o contina 3 -> STOP Cronmetro.
}
If &Estado_CHR2 <> 2
{
  &PARPADEO_D2 = 2
}
}
}
}

Var 4086, name SW_ET2, Link IOCARD_SW, Device 161, Input 6, type P //  Botn ET
{
if &CHR_ET_ToDisp2 = -1
{
  &CHR_ET_ToDisp2 = 0
  &Aguja_Segs2 = 0
  &DECIMAL_C2 = 1
  &DECIMAL_D2 = 1
} 
else
{

&DECIMAL_C2 = 0
Call &Ver_ET2
If &CHR_ET_ToDisp2 = 0 // Venimos de la Funcin CHR
{
&CHR_ET_ToDisp2 = 1 // Acivamos control sobre el display para ET
}
else // Ya estabamos en la funcin ET
{
&Estado_ET2 = &Estado_ET2 + 1 // Cambiamos el estado de ET
}
If &Estado_ET2 > 3 // Comprobamos limite del estado del ET
{ 
&Estado_ET2 = 2 // 2 -> Inicia ET o contina 3 -> STOP ET
}
If &Estado_ET2 <> 2
{
  &PARPADEO_D2 = 2
}
}
}

Var 4088, Link IOCARD_SW, Device 161, Input 5, type P // Botn RST
{
if &SW_CHR2 = 1 
{
  &CHR_ET_ToDisp2 = -1
  &Estado_CHR2 = 1
  &Estado_ET2 = 1
  &DECIMAL_C2 = 1
  &Aguja_Segs2 = 45  
  &Disp_DWN_Min2 = -999999
  &Disp_DWN_Sec2 = -999999
  &DECIMAL_D2 = 0
  &CHR_Min2 = 0
  &CHR_Sec2 = 0
  &ET_Hr2 = 0
  &ET_Min2 = 0
  &ET_Sec2 = 0
 &DECIMAL_C2 = 0
}
else
{
if &CHR_ET_ToDisp2 = -1
{
  &CHR_ET_ToDisp2 = 0
  &Aguja_Segs2 = 0
  &DECIMAL_C2 = 1
  &DECIMAL_D2 = 1
} 
else
{

If &CHR_ET_ToDisp2 = 0
{
&CHR_Min2 = 0 // Ponemos a cero los minutos del CHR
&CHR_Sec2 = 0 // Ponemos a cero los segundos del CHR
&Aguja_Segs2 = 0
Call &Ver_CHR2 
}
else
{
&ET_Hr2 = 0 // Ponemos a cero la hora del ET
&ET_Min2 = 0 // Ponemos a cero los minutos del ET
&ET_Sec2 = 0 // Ponemos a cero los segundos del ET
Call &Ver_ET2
} 
}
}
}

Var 4090, Link IOCARD_SW, Device 161, Input 3, type P // Botn +
{
  IF &Modif_Year2 = 1 // Si estamos en activacion del control del ao
  {
    &Year_to_Modif2 = &Year_to_Modif2 + 1
    &Disp_Year2 = &Year_to_Modif2
  }
  IF &Modif_DDMM2 = 1 // Si estamos en activacion del control del Mes
  {
    &MM_to_Modif2 = &MM_to_Modif2 + 1
    If &MM_to_Modif2 > 12
    {
      &MM_to_Modif2 = 1
    }
    &DispMonthMin2 = &MM_to_Modif2 
  }
  IF &Modif_DDMM2 = 2 // Si estamos en activacion del control del Da
  {
    &DD_to_Modif2 = &DD_to_Modif2 + 1
    If &DD_to_Modif2 > &Limit_DD_Mes2 
    {
      &DD_to_Modif2 = 1
    }
    &Disp_Day_Hour2 = &DD_to_Modif2 
  }
  IF &Modif_HHMM2 = 1 // Si estamos en activacion del control de Minutos
  {
    &MI_to_Modif2 = &MI_to_Modif2 + 1
    If &MI_to_Modif2 > 59
    {
      &MI_to_Modif2 = 0
    }
    &DispMonthMin2 = &MI_to_Modif2 
  }
  IF &Modif_HHMM2 = 2 // Si estamos en activacion del control de Horas
  {
    &HH_to_Modif2 = &HH_to_Modif2 + 1
    If &HH_to_Modif2 > 23
    {
      &HH_to_Modif2 = 0
    }
    &Disp_Day_Hour2 = &HH_to_Modif2 
  }
}


Var 4092, Link IOCARD_SW, Device 161, Input 4, type P // Botn -
{
IF &Modif_Year2 = 1 // Si estamos en activacion del control del ao
{
&Year_to_Modif2 = &Year_to_Modif2 - 1
&Disp_Year2 = &Year_to_Modif2
}
IF &Modif_DDMM2 = 1 // Si estamos en activacion del control del Mes
{
&MM_to_Modif2 = &MM_to_Modif2 - 1
If &MM_to_Modif2 < 1
{
&MM_to_Modif2 = 12
}
&DispMonthMin2 = &MM_to_Modif2 
}
IF &Modif_DDMM2 = 2 // Si estamos en activacion del control del Da
{
&DD_to_Modif2 = &DD_to_Modif2 - 1
If &DD_to_Modif2 < 1
{
&DD_to_Modif2 = &Limit_DD_Mes2 
}
&Disp_Day_Hour2 = &DD_to_Modif2 
}
IF &Modif_HHMM2 = 1 // Si estamos en activacion del control de Minutos
 {
  &MI_to_Modif2 = &MI_to_Modif2 - 1
  If &MI_to_Modif2 < 0
   {
    &MI_to_Modif2 = 59
   }
   &DispMonthMin2 = &MI_to_Modif2 
  }
  IF &Modif_HHMM2 = 2 // Si estamos en activacion del control de Horas
  {
    &HH_to_Modif2 = &HH_to_Modif2 - 1
    If &HH_to_Modif2 < 0
    {
      &HH_to_Modif2 = 23
    }
    &Disp_Day_Hour2 = &HH_to_Modif2 
  }
}


// /////////////////////////////////////////////////////////////////////////////////////////
// SUBRUTINAS
// /////////////////////////////////////////////////////////////////////////////////////////


Var 4094, name Show_Display2, Link SUBRUTINE // Muestra el ao
{
&PARPADEO_U2 = 0
IF &2Date_Year = 1 // Visualizo el ao
{
&Disp_Year2 = -999999 // Apagamos el ao 
&Disp_Year2 = &Zulu_Year_Set2 
}
IF &2Date_Year = 2 // Visualizo el dia y mes
{
&Disp_Day_Hour2 = &DayofMonth2 
&DispMonthMin2 = &Current_Month2 
&PARPADEO_U2 = 2
}
IF &2Date_Year = 3 // Visualizo la hora Zulu y Minutos
{
&Disp_Day_Hour2 = &Zulu_Hour2 
&DispMonthMin2 = &Zulu_Minute2 
&PARPADEO_U2 = 1
}
IF &2Date_Year = 4 // Visualizo Minutos y Segundos
{
&Disp_Day_Hour2 = &Zulu_Minute2 
&DispMonthMin2 = &Clock_Seconds2 
&PARPADEO_U2 = 1
}
}

Var 4096, name Ver_CHR2, Link SUBRUTINE // Pasa CHR al display
{
&Disp_DWN_Min2 = &CHR_Min2 // Mostramos los minutos del CHR en Display Down
&Disp_DWN_Sec2 = &CHR_Sec2 // Mostramos los minutos del CHR en Display Down
}

Var 4098, name Ver_ET2, Link SUBRUTINE // Pasa ET al display
{
If &ET_Hr2 = 0 // Durante la primera hora mostramos MM:SS
{
&Disp_DWN_Min2 = &ET_Min2 // Mostramos los minutos del ET en Display Down
&Disp_DWN_Sec2 = &ET_Sec2 // Mostramos los segundos del ET en Display Down 
} 
else // Despues mostramos HH:MM
{
&Disp_DWN_Min2 = &ET_Hr2 // Mostramos la hora del ET en Display Down
&Disp_DWN_Sec2 = &ET_Min2 // Mostramos los minutos del ET en Display Down
}
}

Var 4100, name Chk_Bisiesto2, Link SUBRUTINE // Comprueba si el ao es bisisesto
{ 
L0 = MOD &Zulu_Year_Set2 ,4 // L0 acumula el resto de la divisin
IF L0 = 0
{
&Chk_Bisiesto2 = 1 // No Bisiesto = 0 Bisiesto = 1
}
ELSE
{
L0 = MOD &Zulu_Year_Set2 ,400
IF L0 = 0
{
L0 = MOD &Zulu_Year_Set2 ,100
IF L0 = 0
{
&Chk_Bisiesto2 = 1 // No Bisiesto = 0 Bisiesto = 1
} 
ELSE
{
&Chk_Bisiesto2 = 0 // No Bisiesto = 0 Bisiesto = 1
}
}
ELSE
{
&Chk_Bisiesto2 = 0 // No Bisiesto = 0 Bisiesto = 1
}
}
}

Var 4102, name Chk_DiasMes2, Link SUBRUTINE // Calcula cuantos das tiene el mes
// 31 das tienen ENE, MAR, MAY, JUL, AGO, OCT, DIC
// 30 das tienen ABR, JUN, SEP, NOV
// 28 das tiene FEB excepto los bisiestos que tiene 29
{
If &MM_to_Modif2 = 1 // ENE
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 2 // FEB
{
If &Chk_Bisiesto2 = 0 // Si no es bisiesto
{ 
&Limit_DD_Mes2 = 28
}
else // Si es bisiesto
{
&Limit_DD_Mes2 = 29
}
}
If &MM_to_Modif2 = 3 // MAR
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 4 // ABR
{
&Limit_DD_Mes2 = 30
}
If &MM_to_Modif2 = 5 // MAY
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 6 // JUN
{
&Limit_DD_Mes2 = 30
}
If &MM_to_Modif2 = 7 // JUL
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 8 // AGO
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 9 // SEP
{
&Limit_DD_Mes2 = 30
}
If &MM_to_Modif2 = 10 // OCT
{
&Limit_DD_Mes2 = 31
}
If &MM_to_Modif2 = 11 // NOV
{
&Limit_DD_Mes2 = 30
}
If &MM_to_Modif2 = 12 // DIC
{
&Limit_DD_Mes2 = 31
}
}

Var 4104, name Calc_DayYear2, Link SUBRUTINE // Calcula el dia del mes en relacion al ao total
// // As el 1 de ENE es el Calc_DayYear2 = 1 y el 
// // 31 de DIC es el 365 excepto en bisiesto que es el 366
{
If &MM_to_Modif2 = 1 // ENE 31 
{
&DayofYear2 = &DD_to_Modif2 // Paso a Calc_DayYear2 el da del mes de Enero
}
If &MM_to_Modif2 = 2 // FEB 28
{
&DayofYear2 = &DD_to_Modif2 + 31 // Le sumo a los das del mes los del mes anterior
}
If &MM_to_Modif2 = 3 // MAR 31 
{
&DayofYear2 = &DD_to_Modif2 + 59 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 4 // ABR 30 
{
&DayofYear2 = &DD_to_Modif2 + 90 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 5 // MAY 31 
{
&DayofYear2 = &DD_to_Modif2 + 120 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 6 // JUN 30 
{
&DayofYear2 = &DD_to_Modif2 + 151 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 7 // JUL 31 
{
&DayofYear2 = &DD_to_Modif2 + 181 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 8 // AGO 31 
{
&DayofYear2 = &DD_to_Modif2 + 212 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 9 // SEP 30 
{
&DayofYear2 = &DD_to_Modif2 + 243 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 10 // OCT 31 
{
&DayofYear2 = &DD_to_Modif2 + 273 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 11 // NOV 30 
{
&DayofYear2 = &DD_to_Modif2 + 304 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 = 12 // DIC 31 
{
&DayofYear2 = &DD_to_Modif2 + 334 // Le sumo a los das del mes los de los meses anteriores
}
If &MM_to_Modif2 > 1
{
If &Chk_Bisiesto2 = 1 // Si es bisiesto
{ 
&DayofYear2 = &DayofYear2 + 1
}
} 
&Current_Month2 = &MM_to_Modif2
&DayofMonth2 = &DD_to_Modif2
}
Var 4106, name BLINK3, Link SUBRUTINE
{
  IF &BLINK3 = 0
  {
    IF &PARPADEO_U2 = 0   // No parpadea y queda apagado
    {
       &DECIMAL_U2 = 0
    }
    IF &PARPADEO_U2 = 1  // Parpadea
    {
       &DECIMAL_U2 = 1
       &BLINK3 = DELAY 1, 50
    }
    IF &PARPADEO_U2 = 2   // No parpadea y queda encendido
    {
       &DECIMAL_U2 = 1
    }
  }
  ELSE
  {
    IF &PARPADEO_U2 = 0
    {
       &DECIMAL_U2 = 0
    }
    IF &PARPADEO_U2 = 1
    {
       &DECIMAL_U2 = 0
    }
    IF &PARPADEO_U2 = 2
    {
       &DECIMAL_U2 = 1
    }
  }
}

Var 4108, name BLINK4, Link SUBRUTINE
{
  IF &BLINK4 = 0
  {
    IF &PARPADEO_D2 = 0   // No parpadea y queda apagado
    {
       &DECIMAL_D2 = 0
    }
    IF &PARPADEO_D2 = 1  // Parpadea
    {
       &DECIMAL_D2 = 1
       &BLINK4 = DELAY 1, 50
    }
    IF &PARPADEO_D2 = 2   // No parpadea y queda encendido
    {
       &DECIMAL_D2 = 1
    }
  }
  ELSE
  {
    IF &PARPADEO_D2 = 0
    {
       &DECIMAL_D2 = 0
    }
    IF &PARPADEO_D2 = 1
    {
       &DECIMAL_D2 = 0
    }
    IF &PARPADEO_D2 = 2
    {
       &DECIMAL_D2 = 1
    }
  }
}

// //////////////////////////////////
// END CHRONO F/O
// //////////////////////////////////





// /////////////////////////////////////////////////////////
// FRONTAL INPUTS AND OUTPUTS
// /////////////////////////////////////////////////////////

// N1 SET, FLAPS & AUTOBRAKES
// FLAPS OUTPUTS
Var 2020, name MIPBRAKEDIS_O, Link IOCARD_OUT, DEVICE 17, Output 21 // AUTO BRAKE DISARM INDICATOR
Var 2022, name MIPANTI_SKID_O, Link IOCARD_OUT, DEVICE 17, Output 22 // ANTI SKID INOP INDICATOR
Var 2024, name MIPFLAPTRANS_O, Link IOCARD_OUT, DEVICE 17, Output 23 // LE FLAPS TRANSIT INDICATOR
Var 2026, name MIPFLAPSEXT_O, Link IOCARD_OUT, DEVICE 17, Output 24 // LE FLAPS EXTENDED INDICATOR

// INPUTS
// N1 SET
Var 2028, name N1SET2_I, Link IOCARD_SW, DEVICE 17, Input 36 // N1 SET ROTARY SWITCH POSITION 2
Var 2030, name N1SET1_I, Link IOCARD_SW, DEVICE 17, Input 37 // N1 SET ROTARY SWITCH POSITION 1
Var 2032, name N1SETAUTO_I, Link IOCARD_SW, DEVICE 17, Input 38 // N1 SET ROTARY SWITCH POSITION AUTO
Var 2034, name N1SETBOTH_I, Link IOCARD_SW, DEVICE 17, Input 39 // N1 SET ROTARY SWITCH POSITION BOTH
Var 2036, name N1SETENC_I, Link IOCARD_SW, DEVICE 17, Input 40 // N1 SET ENCODER INPUT

// FUEL FLOW
Var 2038, name FUEL_USED_I, Link IOCARD_SW, DEVICE 17, Input 42 // FUEL FLOW SWITCH USED
Var 2040, name FUEL_RESET_I, Link IOCARD_SW, DEVICE 17, Input 43 // FUEL FLOW SWITCH RESET

// SPD REF
Var 2042, name SPD_AUTO_I, Link IOCARD_SW, DEVICE 17, Input 45 // SPD REF ROTARY SWITCH POSITION AUTO
Var 2044, name SPD_V1_I, Link IOCARD_SW, DEVICE 17, Input 46 // SPD REF ROTARY SWITCH POSITION V1
Var 2046, name SPD_VR_I, Link IOCARD_SW, DEVICE 17, Input 47 // SPD REF ROTARY SWITCH POSITION VR
Var 2048, name SPD_WT_I, Link IOCARD_SW, DEVICE 17, Input 48 // SPD REF ROTARY SWITCH POSITION WT
Var 2050, name SPD_VREF_I, Link IOCARD_SW, DEVICE 17, Input 49 // SPD REF ROTARY SWITCH POSITION VREF
Var 2052, name SPD_A_I, Link IOCARD_SW, DEVICE 17, Input 50 // SPD REF ROTARY SWITCH POSITION TRIANGLE
Var 2054, name SPD_SET_I, Link IOCARD_SW, DEVICE 17, Input 51 // SPD REF ROTARY SWITCH POSITION SET
Var 2056, name SPD_ENC_I, Link IOCARD_SW, DEVICE 17, Input 52 // SPD REF ENCODER INPUT

// AUTO BRAKE
Var 2058, name BRAKE_RTO_I, Link IOCARD_SW, DEVICE 17, Input 54 // AUTO BRAKE ROTARY SWITCH POSITION RTO
Var 2060, name BRAKE_OFF_I, Link IOCARD_SW, DEVICE 17, Input 55 // AUTO BRAKE ROTARY SWITCH POSITION OFF
Var 2062, name BRAKE_1_I, Link IOCARD_SW, DEVICE 17, Input 56 // AUTO BRAKE ROTARY SWITCH POSITION 1
Var 2064, name BRAKE_2_I, Link IOCARD_SW, DEVICE 17, Input 57 // AUTO BRAKE ROTARY SWITCH POSITION 2
Var 2066, name BRAKE_3_I, Link IOCARD_SW, DEVICE 17, Input 58 // AUTO BRAKE ROTARY SWITCH POSITION 3
Var 2068, name BRAKE_MAX_I, Link IOCARD_SW, DEVICE 17, Input 59 // AUTO BRAKE ROTARY SWITCH POSITION MAX

// MFD
Var 2070, name MFD_ENG_I, Link IOCARD_SW, DEVICE 17, Input 60 // MFD ENG MOMENTARY SWITCH BUTTON
Var 2072, name MFD_SYS_I, Link IOCARD_SW, DEVICE 17, Input 61 // MFD SYS MOMENTARY SWITCH BUTTON

// SERVOS
Var 2074, name SERVO_YAW, Link USB_SERVOS, Device 18, Output 1, PosL 185, PosC 400, PosR 675, Type 1 // YAW DAMPER GAUGE.
Var 2075, name SERVO_FLAPL, Link USB_SERVOS, Device 18, Output 2, PosL 200, PosC 630, PosR 1023, Type 1 // LEFT NEEDLE FLAPS GAUGE SERVO.
Var 2076, name SERVO_FLAPR, Link USB_SERVOS, Device 18, Output 3, PosL 170, PosC 600, PosR 1023, Type 1 // RIGHT NEEDLE FLAPS GAUGE SERVO.
Var 2077, name SERVO_BRAKE, Link USB_SERVOS, Device 18, Output 4, PosL 200, PosC 600, PosR 972, Type 1 // BRAKE PRESS GAUGE SERVO.


// NOSE WHEEL
Var 2078, name NOSEWHEEL_I, Link IOCARD_SW, DEVICE 17, Input 66 // NOSE WHEEL SWITCH

// DU LEFT
Var 2080, name DUL_OUTBD_I, Link IOCARD_SW, DEVICE 17, Input 0 // DU LEFT ROTARY SWITCH POSITION "MAIN OUTBD PFD"
Var 2082, name DUL_MAINNORM_I, Link IOCARD_SW, DEVICE 17, Input 1 // DU LEFT ROTARY SWITCH POSITION "MAIN NORM"
Var 2084, name DUL_MAINENG_I, Link IOCARD_SW, DEVICE 17, Input 2 // DU LEFT ROTARY SWITCH POSITION "MAIN ENG PRI"
Var 2086, name DUL_MAINPFD_I, Link IOCARD_SW, DEVICE 17, Input 3 // DU LEFT ROTARY SWITCH POSITION "MAIN PFD"
Var 2088, name DUL_MAINMFD_I, Link IOCARD_SW, DEVICE 17, Input 4 // DU LEFT ROTARY SWITCH POSITION "MAIN MFD"
Var 2090, name DUL_LOWENG_I, Link IOCARD_SW, DEVICE 17, Input 5 // DU LEFT ROTARY SWITCH POSITION "LOWER ENG PRI"
Var 2092, name DUL_LOWNORM_I, Link IOCARD_SW, DEVICE 17, Input 6 // DU LEFT ROTARY SWITCH POSITION "LOWER NORM"
Var 2094, name DUL_LOWND_I, Link IOCARD_SW, DEVICE 17, Input 7 // DU LEFT ROTARY SWITCH POSITION "LOWER ND"

// DU RIGHT
Var 2096, name DUR_LOWND_I, Link IOCARD_SW, DEVICE 17, Input 9 // DU RIGHT ROTARY SWITCH POSITION "LOWER ND"
Var 2098, name DUR_LOWNORM_I, Link IOCARD_SW, DEVICE 17, Input 10 // DU RIGHT ROTARY SWITCH POSITION "LOWER NORM"
Var 2100, name DUR_LOWENG_I, Link IOCARD_SW, DEVICE 17, Input 11 // DU RIGHT ROTARY SWITCH POSITION "LOWER ENG PRI"
Var 2102, name DUR_MAINMFD_I, Link IOCARD_SW, DEVICE 17, Input 12 // DU RIGHT ROTARY SWITCH POSITION "MAIN MFD"
Var 2104, name DUR_MAINPFD_I, Link IOCARD_SW, DEVICE 17, Input 13 // DU RIGHT ROTARY SWITCH POSITION "MAIN PFD"
Var 2106, name DUR_MAINENG_I, Link IOCARD_SW, DEVICE 17, Input 14 // DU RIGHT ROTARY SWITCH POSITION "MAIN ENG PRI"
Var 2108, name DUR_MAINNORM_I, Link IOCARD_SW, DEVICE 17, Input 15 // DU RIGHT ROTARY SWITCH POSITION "NORM"
Var 2110, name DUR_OUTBD_I, Link IOCARD_SW, DEVICE 17, Input 16 // DU RIGHT ROTARY SWITCH POSITION "OUTBD PFD"

// AFDS LEFT INPUTS
Var 2112, name AFDSAP_L_I, Link IOCARD_SW, DEVICE 17, Input 18 // AFDS LEFT SWITCH "AP/P/RST"
Var 2114, name AFDSAT_L_I, Link IOCARD_SW, DEVICE 17, Input 19 // AFDS LEFT SWITCH "AT/P/RST"
Var 2116, name AFDSFMC_L_I, Link IOCARD_SW, DEVICE 17, Input 20 // AFDS LEFT SWITCH "FMC/P/RST"
Var 2120, name AFDST1_L_I, Link IOCARD_SW, DEVICE 17, Input 21 // AFDS LEFT SWITCH "TEST 1"
Var 2122, name AFDST2_L_I, Link IOCARD_SW, DEVICE 17, Input 22 // AFDS LEFT SWITCH "TEST 2"

// AFDS RIGHT INPUTS
Var 2124, name AFDSAP_R_I, Link IOCARD_SW, DEVICE 17, Input 27 // AFDS RIGHT SWITCH "AP/P/RST"
Var 2126, name AFDSAT_R_I, Link IOCARD_SW, DEVICE 17, Input 28 // AFDS RIGHT SWITCH "AT/P/RST"
Var 2128, name AFDSFMC_R_I, Link IOCARD_SW, DEVICE 17, Input 29 // AFDS RIGHT SWITCH "FMC/P/RST"
Var 2130, name AFDST1_R_I, Link IOCARD_SW, DEVICE 17, Input 30 // AFDS RIGHT SWITCH "TEST 1"
Var 2132, name AFDST2_R_I, Link IOCARD_SW, DEVICE 17, Input 31 // AFDS RIGHT SWITCH "TEST 2"

// FIRE WARNINGS INPUTS
Var 2134, name FIREW_L_I, Link IOCARD_SW, DEVICE 17, Input 63 // LEFT FIRE WARNING MOMENTARY SWITCH
Var 2136, name FIREW_R_I, Link IOCARD_SW, DEVICE 17, Input 23 // RIGHT FIRE WARNING MOMENTARY SWITCH

// MASTER CAUTIONS INPUTS
Var 2138, name MASTERC_L_I, Link IOCARD_SW, DEVICE 17, Input 64 // LEFT MASTER CAUTION MOMENTARY SWITCH
Var 2140, name MASTERC_R_I, Link IOCARD_SW, DEVICE 17, Input 17 // RIGHT MASTER CAUTION MOMENTARY SWITCH

// SIXPACKS INPUTS
Var 2142, name SIXPACK_L_I, Link IOCARD_SW, DEVICE 17, Input 65 // LEFT SIXPACK MOMENTARY SWITCH
Var 2144, name SIXPACK_R_I, Link IOCARD_SW, DEVICE 17, Input 8 // RIGHT SIXPACK MOMENTARY SWITCH

// LIGHTS TEST
Var 2146, name MIPDIMTEST_I, Link IOCARD_SW, DEVICE 17, Input 67 // MIP LIGHTS TEST MOMENTARY SWITCH POSITION "DIM"
Var 2148, name MIPTESTTEST_I, Link IOCARD_SW, DEVICE 17, Input 68 // MIP LIGHTS TEST MOMENTARY SWITCH POSITION "TEST"

// LANDING GEAR INPUTS
Var 2150, name GEARL_UP_I, Link IOCARD_SW, DEVICE 17, Input 69 // LANDING GEAR SWITCH "UP" POSITION
Var 2152, name GEARL_DW_I, Link IOCARD_SW, DEVICE 17, Input 70 // LANDING GEAR SWITCH "DW" POSITION

// MISCELANIOUS INPUTS
Var 2154, name SIXPACKFO_I, Link IOCARD_SW, DEVICE 17, Input 8 // F/O SIXPACK SWITCH
Var 2156, name MASTERCAUTFO_I, Link IOCARD_SW, DEVICE 17, Input 17 // F/O MASTER CAUTION SWITCH
Var 2158, name FIREWARNFO_I, Link IOCARD_SW, DEVICE 17, Input 23 // F/O FIRE WARNING SWITCH
Var 2166, name GRDPROXSYST_I, Link IOCARD_SW, DEVICE 17, Input 32 // GROUND PROXIMITY SYS TEST SWITCH
Var 2168, name GRDPROXFLAP_I, Link IOCARD_SW, DEVICE 17, Input 33 // GROUND PROXIMITY FLAP INHIBIT SWITCH
Var 2170, name GRDPROXGEAR_I, Link IOCARD_SW, DEVICE 17, Input 34 // GROUND PROXIMITY GEAR INHIBIT SWITCH
Var 2172, name GRDPROXTERR_I, Link IOCARD_SW, DEVICE 17, Input 35 // GROUND PROXIMITY TERR INHIBIT SWITCH

// FREE INPUTS
Var 2160, name FREE_1_I, Link IOCARD_SW, DEVICE 17, Input 24 // FREE INPUT
Var 2162, name FREE_2_I, Link IOCARD_SW, DEVICE 17, Input 25 // FREE INPUT
Var 2164, name FREE_3_I, Link IOCARD_SW, DEVICE 17, Input 26 // FREE INPUT
Var 2174, name FREE_4_I, Link IOCARD_SW, DEVICE 17, Input 44 // FREE INPUT
Var 2176, name FREE_5_I, Link IOCARD_SW, DEVICE 17, Input 62 // FREE INPUT
Var 2178, name FREE_6_I, Link IOCARD_SW, DEVICE 17, Input 71 // FREE INPUT

// AFDS LEFT OUTPUTS
Var 2180, name AFDSAPG_L_O, Link IOCARD_OUT, DEVICE 17, Output 11 // AFDS LEFT GREEN AP/P/RST LED
Var 2182, name AFDSAPR_L_O, Link IOCARD_OUT, DEVICE 17, Output  12 // AFDS LEFT "RED AP/P/RST LED"
Var 2184, name AFDSATG_L_O, Link IOCARD_OUT, DEVICE 17, Output 13 // AFDS LEFT "GREEN AT/P/RST LED"
Var 2186, name AFDSATR_L_O, Link IOCARD_OUT, DEVICE 17, Output 14 // AFDS LEFT "RED AT/P/RST LED"
Var 2188, name AFDSFMCG_L_O, Link IOCARD_OUT, DEVICE 17, Output 15 // AFDS LEFT "GREEN FMC/P/RST LED"

// AFDS RIGHT OUTPUTS
Var 2190, name AFDSAPG_R_O, Link IOCARD_OUT, DEVICE 17, Output 16 // AFDS RIGHT "GREEN AP/P/RST LED"
Var 2192, name AFDSAPR_R_O, Link IOCARD_OUT, DEVICE 17, Output  17 // AFDS RIGHT "RED AP/P/RST LED"
Var 2194, name AFDSATG_R_O, Link IOCARD_OUT, DEVICE 17, Output 18 // AFDS RIGHT "GREEN AT/P/RST LED"
Var 2196, name AFDSATR_R_O, Link IOCARD_OUT, DEVICE 17, Output 19 // AFDS RIGHT "RED AT/P/RST LED"
Var 2198, name AFDSFMCG_R_O, Link IOCARD_OUT, DEVICE 17, Output 20 // AFDS RIGHT "GREEN FMC/P/RST LED"

// FIRE WARNINGS OUTPUTS
Var 2200, name FIREW_L_O, Link IOCARD_OUT, DEVICE 17, Output 25 // LEFT FIRE WARNING INDICATOR
Var 2202, name FIREW_R_O, Link IOCARD_OUT, DEVICE 17, Output 50 // RIGHT FIRE WARNING INDICATOR

// MASTER CAUTIONS OUTPUTS
Var 2204, name MASTERC_L_O, Link IOCARD_OUT, DEVICE 17, Output 26 // LEFT MASTER CAUTION INDICATOR
Var 2206, name MASTERC_R_O, Link IOCARD_OUT, DEVICE 17, Output 49 // RIGHT MASTER CAUTION INDICATOR

// SIXPACKS OUTPUTS
// LEFT
Var 2208, name SIXPFLT_L_O, Link IOCARD_OUT, DEVICE 17, Output 27 // LEFT SIXPACK FLT CONT INDICATOR
Var 2210, name SIXPELE_L_O, Link IOCARD_OUT, DEVICE 17, Output 28 // LEFT SIXPACK ELEC INDICATOR
Var 2212, name SIXPIRS_L_O, Link IOCARD_OUT, DEVICE 17, Output 29 // LEFT SIXPACK IRS INDICATOR
Var 2214, name SIXPAPU_L_O, Link IOCARD_OUT, DEVICE 17, Output 30 // LEFT SIXPACK APU INDICATOR
Var 2216, name SIXPFUEL_L_O, Link IOCARD_OUT, DEVICE 17, Output 31 // LEFT SIXPACK FUEL INDICATOR
Var 2218, name SIXPOVHT_L_O, Link IOCARD_OUT, DEVICE 17, Output 32 // LEFT SIXPACK OVHT/DET INDICATOR
// RIGHT
Var 2220, name SIXPICE_R_O, Link IOCARD_OUT, DEVICE 17, Output 43 // RIGHT LEFT SIXPACK ANTI-ICE INDICATOR
Var 2222, name SIXPENG_R_O, Link IOCARD_OUT, DEVICE 17, Output 44 // RIGHT SIXPACK ENG INDICATOR
Var 2224, name SIXPHYD_R_O, Link IOCARD_OUT, DEVICE 17, Output 45 // RIGHT SIXPACK HYD INDICATOR
Var 2226, name SIXPOVE_R_O, Link IOCARD_OUT, DEVICE 17, Output 46 // RIGHT SIXPACK OVERHEAD INDICATOR
Var 2228, name SIXPDOO_R_O, Link IOCARD_OUT, DEVICE 17, Output 47 // RIGHT SIXPACK DOORS INDICATOR
Var 2230, name SIXPAIR_R_O, Link IOCARD_OUT, DEVICE 17, Output 48 // RIGHT SIXPACK AIR  COND INDICATOR

// MISCELLANIOUS OUTPUTS-INDICATORS
Var 2232, name BELOW_L_O, Link IOCARD_OUT, DEVICE 17, Output 33 // LEFT BELOW G/S P-INHIBIT INDICATOR
Var 2234, name SPDBKARM_O, Link IOCARD_OUT, DEVICE 17, Output 34 // SPEED BRAKE ARMED INDICATOR
Var 2236, name SPDBKNARM_O, Link IOCARD_OUT, DEVICE 17, Output 35 // SPEED BRAKE DO NOT ARM INDICATOR
Var 2238, name STABOUT_O, Link IOCARD_OUT, DEVICE 17, Output 36 // STAB OUT OF TRIM KORRY INDICATOR
Var 2240, name NOSEG_UP_O, Link IOCARD_OUT, DEVICE 17, Output 37 // NOSE GEAR UP INDICATOR
Var 2242, name NOSEG_DW_O, Link IOCARD_OUT, DEVICE 17, Output 38 // NOSE GEAR DW INDICATOR
Var 2244, name LEFTG_UP_O, Link IOCARD_OUT, DEVICE 17, Output 39 // LEFT GEAR UP INDICATOR
Var 2246, name RIGHTG_UP_O, Link IOCARD_OUT, DEVICE 17, Output 40 // RIGHT GEAR UP INDICATOR
Var 2248, name LEFTG_DW_O, Link IOCARD_OUT, DEVICE 17, Output 41 // LEFT GEAR DW INDICATOR
Var 2250, name RIGHTG_DW_O, Link IOCARD_OUT, DEVICE 17, Output 42 // RIGHT GEAR DW INDICATOR
Var 2252, name SPDBKEXT_O, Link IOCARD_OUT, DEVICE 17, Output 51 // SPEED BRAKE EXTENDED
Var 2254, name BELOW_R_O, Link IOCARD_OUT, DEVICE 17, Output 52 // RIGHT-F/O BELOW G/S P-INHIBIT INDICATOR
Var 2256, name GPWSINOP_O, Link IOCARD_OUT, DEVICE 17, Output 53 // GPWS INOP INDICATOR

// FREE OUTPUTS
Var 2258, name FREE_1_O, Link IOCARD_OUT, DEVICE 17, Output 54 // FREE OUTPUT
Var 2260, name FREE_2_O, Link IOCARD_OUT, DEVICE 17, Output 55 // FREE OUTPUT
